using System;
using System.Web.Profile;
using ClickSocial.Framework;

namespace ClickSocial.Entities
{
    public enum TipoVisibilidad
    {
        Publico = 1,
        Todos = 123,
        Publico_ConAcceso = 13        
    }

    public class EventoInfo : IHydratable<long>, ICloneable
    {
        #region Fields
        private long _EventoID;
        private string _Nombre;
        private string _Descripcion;
        private DateTime _FechaCreacion;
        private int _Visibilidad;
        private string _clave;
        private DateTime _FechaModificado;
        private bool _Estado;
        private DateTime _Fecha;
        private string _Tapa;
        private double _Precio;
        private string _Fotografo;
        private bool _Destacado;
        private int _Orden;

        #endregion

        #region Properties

        public long EventoID
        {
            get { return _EventoID; }
            set { _EventoID = value; }
        }
        public string Nombre
        {
            get { return _Nombre; }
            set { _Nombre = value; }
        }
        public string Descripcion
        {
            get { return _Descripcion; }
            set { _Descripcion = value; }
        }
        public DateTime FechaCreacion
        {
            get { return _FechaCreacion; }
            set { _FechaCreacion = value; }
        }
        public int Visibilidad
        {
            get { return _Visibilidad; }
            set { _Visibilidad = value; }
        }
        public bool Estado
        {
            get { return _Estado; }
            set { _Estado = value; }
        }
        public DateTime FechaModificado
        {
            get { return _FechaModificado; }
            set { _FechaModificado = value; }
        }
        public string Clave
        {
            get { return _clave; }
            set { _clave = value; }
        }
        public DateTime Fecha
        {
            get { return _Fecha; }
            set { _Fecha = value; }
        }
        public string Tapa
        {
            get { return _Tapa; }
            set { _Tapa = value; }
        }
        public double Precio
        {
            get { return _Precio; }
            set { _Precio = value; }
        }
        public string Fotografo
        {
            get { return _Fotografo; }
            set { _Fotografo = value; }
        }
        public string NombreFotografo
        {
            get
            {
                PerfilComun p = ProfileBase.Create(_Fotografo) as PerfilComun;
                string nombre;
                if (p.Nombre == string.Empty && p.Apellido == string.Empty)
                    nombre = _Fotografo;
                else
                    nombre = string.Format("{0} {1}", p.Nombre, p.Apellido);
                return nombre;
            }
        }
        public bool Destacado
        {
            get { return _Destacado; }
            set { _Destacado = value; }
        }
        public int Orden
        {
            get { return _Orden; }
            set { _Orden = value; }
        }

        #endregion

        #region IHydratable<long> Members

        public long KeyID
        {
            get
            {
                return _EventoID;
            }
            set
            {
                _EventoID = value;
            }
        }

        public void Fill(System.Data.IDataReader dr)
        {
            _EventoID = Convert.ToInt64(Null.GetNull(dr[dr.GetOrdinal("EventoID")], _EventoID));
            _Visibilidad = Convert.ToInt32(Null.GetNull(dr[dr.GetOrdinal("Visibilidad")], _Visibilidad));
            _Estado = Convert.ToBoolean(Null.GetNull(dr[dr.GetOrdinal("Estado")], _Estado));
            _FechaCreacion = Convert.ToDateTime(Null.GetNull(dr[dr.GetOrdinal("FechaCreacion")], _FechaCreacion));
            _FechaModificado = Convert.ToDateTime(Null.GetNull(dr[dr.GetOrdinal("FechaModificado")], _FechaModificado));
            _Descripcion = Convert.ToString(Null.GetNull(dr[dr.GetOrdinal("Descripcion")], _Descripcion));
            _Nombre = Convert.ToString(Null.GetNull(dr[dr.GetOrdinal("Nombre")], _Nombre));
            _Fecha = Convert.ToDateTime(Null.GetNull(dr[dr.GetOrdinal("Fecha")], _Fecha));
            _clave = Convert.ToString(Null.GetNull(dr[dr.GetOrdinal("Clave")], _clave));
            _Tapa= Convert.ToString(Null.GetNull(dr[dr.GetOrdinal("Clave")], _Tapa));
            _Precio = Convert.ToDouble(Null.GetNull(dr[dr.GetOrdinal("Precio")], _Precio));
            _Fotografo = Convert.ToString(Null.GetNull(dr[dr.GetOrdinal("Fotografo")], _Fotografo));
            _Destacado = Convert.ToBoolean(Null.GetNull(dr[dr.GetOrdinal("Destacado")], _Destacado));
            _Orden = Convert.ToInt32(Null.GetNull(dr[dr.GetOrdinal("Orden")], _Orden));
        }

        #endregion

        #region ICloneable Members

        public object Clone()
        {
            return (EventoInfo)this.MemberwiseClone();
        }

        #endregion

        public EventoInfo()
        {
        }
    }
}
